import math
import random


# sigmod 函数
def sigmod(x):
    if x <= -700:
        return 0.0
    elif x >= 50:
        return 1.0
    y = 1 / (1 + math.exp(-x))
    return y


# 随机-1~1之间的值
def random_weight():
    random.random()*2-1


# 异常测试类
class NeuralErr(object):
    pass


class Neuron(object):
    def __init__(self, pre_neuron_num):

        # 根据上一层神经元的数量来初始化weights
        # 初始化的weights应该选什么值
        # 选择标准  = 权值 * 输入数据 的累计和尽量处于活跃状态（-5，5）
        # 这里我们就将权值设定在（0，-1）
        self.weights = [random_weight() for _ in range(pre_neuron_num)]  # 权重



    def cal_result(self, inputs):
        if not len(inputs) == len(self.weights):
            raise NeuralErr("输入数据的个数不正确")
        sum = 0
        print(self.weights)
        for i in range(len(inputs)):
            print(self.weights[i])
            sum += inputs[i] * self.weights[i]
        self.value = sigmod(sum)  # 选择标准  = 权值 * 输入数据 的累计和
        return self.value



if __name__ == "__main__":
     n= Neuron(5)
     result = n.cal_result([1,2,3,4,5])
     print(result)